﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Demo.Net.RabbitMQ
{
    public interface IRabbitMQClient
    {


        /// <summary>
        /// Direct模式消息发送
        /// </summary>
        /// <param name="ququeName"></param>
        /// <param name="exchangeName"></param>
        /// <param name="message"></param>
         void DirectPubilsh(string ququeName, string exchangeName, string message);


        /// <summary>
        /// Fanout模式，发布订阅
        /// </summary>
        /// <param name="ququeNameList"></param>
        /// <param name="exchangeName"></param>
        /// <param name="message"></param>
        void FanoutPublish(List<string> ququeNameList, string exchangeName, string message);


        /// <summary>
        /// Header模式
        /// </summary>
        /// <param name="ququeName"></param>
        /// <param name="exchangeName"></param>
        /// <param name="message"></param>
         void HeaderPublish(string exchangeName, string message, Dictionary<string, object> headers, string ququeName = null);


        /// <summary>
        /// Topic模式
        /// </summary>
        void TopicPublish(string exchangeName, string message, string routingKey, string ququeName = null);
    }
}
